The present invention disclosed herein relates to a program trace and more particularly, to a method of tracing a program for solving the bottleneck phenomenon that affects program performance.
Conventional software trace and profilers do not provide a satisfactory function of optimizing software. As used herein, a trace analyzes relational information of a function that is executed by a program in order to solve the bottleneck phenomenon with respect to the function during execution of a program. The profiling is listing characteristics of a program based on trace data that is collected to execute a program trace. For example, the program profiling can include generating a listing including a maximum execution time of a program, a function name having the longest execution time in a program, and the like.
In general, gprof of GNU (GNU stands for “GNU's Not Unix”) is used for the program profiling. The gprof of GNU can provide overall profile information such as the execution time of respective functions executed by a program, the execution weight of a child function of the respective functions, a function call number, and the like.
Further, a program of showing a program trace using simulation can include SocDesigner of ARM (Acorn RISC Machine: ARM Holdings, Inc.). The SocDesigner of ARM can provide profile information in a similar level to the gprof of GNU.
Meanwhile, ETM (Embedded Trace Macrocell) of ARM extracts instructions really executed at the hardware level and reproduces execution of a program using the extracted instructions. But the ETM of ARM does not support the trace browsing of a function call unit, and provides profile information in a lower level than that of the gprof of GNU.
In order to optimize program performance more effectively, there can be required function of browsing a call trace of a program execution function, displaying information related to program execution activation history and profiling, displaying information related to the history and profiling of a program path, providing information related to a parent function of a program execution function, and the like. CallStack means information related to the order of functions that are called while a program is executed.